const http = require('http')
const exportFromJSON = require('export-from-json')

http.createServer(function (request, response) {
  // exportFromJSON actually supports passing JSON as the data option. It's very common that reading it from http request directly.
  const data = '[{"foo":"foo"},{"bar":"bar"}]'
  const fileName = 'download'
  const exportType = 'xls'

  const result = exportFromJSON({
    data,
    fileName,
    exportType,
    processor(content, type, fileName) {
      switch (type) {
        case 'txt':
          response.setHeader('Content-Type', 'text/plain')
          break
        case 'css':
          response.setHeader('Content-Type', 'text/css')
          break
        case 'html':
          response.setHeader('Content-Type', 'text/html')
          break
        case 'json':
          response.setHeader('Content-Type', 'text/plain')
          break
        case 'csv':
          response.setHeader('Content-Type', 'text/csv')
          break
        case 'xls':
          response.setHeader('Content-Type', 'application/vnd.ms-excel')
          break
      }
      response.setHeader('Content-disposition', 'attachment;filename=' + fileName)
      return content
    }
  })

  response.write(result)
  response.end()
}).listen(8080, '127.0.0.1')
